import axios from "axios";
// import commonJS from './commonJS'
// import api from '@/api/systemManagement/logManagement.js'
// import store from '../store/index.js'
// import _ from 'lodash'

// export const nextCancelTokenSources = new Map() // 定义cancel队列

// let menuCodeList = []
// let userCode = ''
const service = axios.create({
  // 连接超时
  timeout: 30 * 1000,
  baseURL: "/api",
});

// let errorTipFlag = false

// let requestNum = 0
// const showTip = (url) => {
//   let msg = '加载中…'
// if (url.indexOf('collector_system/collector/stop') > -1) {
//   msg = '采集器停止中…'
// } else if (url.indexOf('collector_system/collector/start') > -1) {
//   msg = '采集器启用中…'
// }

// 不显示loading
// 登录img
// 日志
//   if (url.indexOf('system_api/auth/captcha/get-image') > -1 ||
//     url.indexOf('system_api/operate-log/add') > -1) {
//     return
//   }
//   if (requestNum === 0) {
//     store.dispatch('tipModel', {state: 998, msg: msg})
//   }
//   console.log('requestNum', requestNum)
//   ++requestNum
// }
// const hideTip = () => {
//   console.log('hide requestNum', requestNum)
//   --requestNum
//   if (requestNum <= 0) {
//     requestNum = 0
//     store.dispatch('tipModel', {state: 998, config: {show: false}})
//   }
// }

// const model = PERMISSION_MODE == 'plat' ? 'plat' : 'tenant'
/*
// 请求拦截器
service.interceptors.request.use(config => { // 请求拦截器中将请求加入cancel队列
  // showTip(config.url)
  // if (!config.hasOwnProperty('cancelToken')) { // 排除不需要cancel的请求
  //   const source = axios.CancelToken.source()
  //   nextCancelTokenSources.set(source.token, source.cancel) // 加入cancel队列
  //   config.cancelToken = source.token
  // }

  // 设置请求token
  let token = localStorage.getItem('token')
  config.headers.Authorization = token || undefined
  console.log(33333)
  // 设置日志参数
//   if (config.logType != undefined) {
//     menuCodeList = JSON.parse(window.sessionStorage.getItem('menuCode'))
//     userCode = commonJS.getCookie('userCode')

//     let hash = location.hash.replace('#', '')
//     const index=hash.indexOf('?');
//     hash=index == -1 ? hash : hash.slice(0,index);
//     config.requestData = config.data
//     config.logMenuCode = menuCodeList ? menuCodeList[hash] : ''
//     config.logUserCode = userCode || (config.data ? (config.data.userName || config.data.tenantCode) : '')
//   }
  return config
}, error => Promise.reject(error))

// 响应拦截器
service.interceptors.response.use(res => { // 响应拦截器中从cancel队列中移除
  // _.debounce(function () {
  //   hideTip()
  // }, 300)()

  // if (res.config.cancelToken) {
  //   nextCancelTokenSources.delete(res.config.cancelToken)
  // }
  // token异常
  // 1003 程序判断token异常
  // 1009 网关判断token异常
  // 1004 账号锁定异常
  // 1005 账号被顶
  // if (res.data.status == 1003 || res.data.status == 1009) {
  //   commonJS.clearLoginCookie(store)
  //   window.location.hash = '#/login'
  //   // window.location.reload()
  // } else if (res.data.status == 1004) {
  //   // 登出
  //   commonJS.clearLoginCookie(store)
  //   window.location.hash = '#/login'
  //   // window.location.reload()
  // }
  // else if (res.data.status == 1005) {
  //   if (!errorTipFlag) {
  //     errorTipFlag = true
  //     store.dispatch('msgModel',
  //       {state: 999, tit: '提示',msg: '您的账号在其他地方登录，您已被强制下线',
  //         callback: () => {
  //           errorTipFlag = false
  //           commonJS.clearLoginCookie()
  //           window.location.hash = '#/login'
  //           // window.location.reload()
  //         }
  //       })
  //   }

  // }else {
  //   let {logType, logMenuCode, requestData, logUserCode, isTenant} = res.config
  //   console.log(7777777123, res, logType, logMenuCode, requestData, logUserCode)
  //   if (logType && logMenuCode && logUserCode) {
  //     addLog({type: logType, module: logMenuCode, content: JSON.stringify(requestData), userName: logUserCode, result: res.data.status == 0 ? 0 : 1, isTenant})
  //   } else {
  //     // 登录接口
  //     if (/\login$/.test(res.request.responseURL) == true && res.data.status == 0) {
  //       window.setTimeout(() => {
  //         addLog({type: 1, module: 'login', content: JSON.stringify(requestData), userName: logUserCode,result: res.data.status == 0 ? 0 : 1, isTenant })
  //       }, 1000)
  //     }
  //   }
  // }

  return res.data
}, error => {
  // _.debounce(function () {
  //   hideTip()
  // }, 300)()
  // if (axios.isCancel(error)) {
  //   nextCancelTokenSources.delete(error.message)
  // }
  return Promise.reject(error)
})
// log
// function addLog (param) {
//   api.add(param)
// }
// logout
// function logout (param) {
//   if (model == 'plat') {
//     api.platLogout()
//   } else {
//     api.tenantLogout()
//   }
// }
*/

export const http = {
  get: (url, paramBody, logInfo) => {
    // service.defaults.withCredentials = true
    console.log("pa", paramBody);
    return service.get(url, {
      params: paramBody,
      headers: {
        "content-type": "application/json",
      },
      // mode: 'cors',
      // credentials: 'include',

      ...logInfo,
    });
  },
  post: (url, paramBody, logInfo) => {
    return service.post(url, paramBody, {
      data: paramBody,
      headers: {
        "content-type": "application/json",
      },
      // mode: 'cors',
      // credentials: 'include',
      ...logInfo,
    });
  },
  // postImg: (url, paramBody) => {
  //   return service.post(url, paramBody, {
  //     headers: {
  //       "content-type": "application/json",
  //     },
  //   }).then(res=>{
  //     data.url=res.data.url
  //   })
  // },
  // 取消正在pending的请求
  // cancelPending: () => {
  //   let currentCancelTokenSources = new Map(nextCancelTokenSources)
  //   nextCancelTokenSources.clear()
  //   for (const [cancelToken, cancel] of currentCancelTokenSources) {
  //     cancel(cancelToken) // cancel 正在pending的请求
  //   }
  // },
  put: (url, paramBody) => {
    return service.put(url, paramBody, {
      headers: {
        "content-type": "application/json",
      },
      // mode: 'cors',
      // credentials: 'include'
    });
  },
  // patch: (url, paramBody) => {
  //   return service.patch(url, paramBody,
  //     {
  //       headers: {
  //         'content-type': 'application/json'
  //       },
  //       mode: 'cors',
  //       credentials: 'include'
  //     })
  // },
  del: (url, paramBody) => {
    return service.delete(url, {
      data: paramBody,
      headers: {},
      // mode: 'cors',
      // credentials: 'include'
    });
  },
};
